public class Main {
    public static void main(String[] args) {
        //运算符这一块
        /*System.out.println(5 / 2);
        System.out.println((float) 5 / 2);
        System.out.println((float) (5 / 2));
        System.out.println((5 / (float) 2));
        System.out.println("===============");
        System.out.println(10 % 3);
        System.out.println(10 % -3);
        System.out.println(-10 % 3);
        System.out.println(-10 % -3);
        System.out.println(11.5 % 2);*/

        //System.out.println(10/0);//异常这一块./(算数异常)
        //


        long d = 100;
        int c = 9;
        //c = c+d; //报错
        c += d;//不报错 特点：运算符会帮助我们进行类型转换  详
        //相当于c = (int)(c + d)



        //逻辑运算符 && || & |
        System.out.println(10 > 20 && 10 / 0 == 0);//短路与
        System.out.println(10 < 20 || 10 / 0 == 0);//短路或
        //System.out.println(10 > 20 & 10 / 0 == 0);//不表示短路，报错
        //System.out.println(10 > 20 | 10 / 0 == 0);//不表示短路，报错


        //位运算符 & | ~ ^
        //按位与&：对应位上只要都是1，对应位的结果就是1
        //按位或|：对应位上只要都是0，对应位的结果就是0
        //按位取反~：对应位是0就变成1，是1就变成0
        //按位异或^:如0110，0011，则0101（一样的地方都是0，不一样的地方都是1）
        //异或运算的推论：1. n^n = 0; 2. 0^n = n;

        //移位运算符 左移：<<    右移：>>    无符号右移：>>> （java特有）
        // 11: 0000 1011
        //关于左移：右边补0
        // 11<<1  --->  0001 0110  --->22 ,即11*2^1
        // 11<<2  --->  0010 1100  --->44 ,即11*2^2
        //关于右移: 左边补符号位
        //。。。。。。。。。。。。。。。。。。。。。。/2^1
        //。。。。。。。。。。。。。。。。。。。。。。/2^2
        //关于无符号右移：左边统一补0（与普通右移的区别）
        //-1：
        //1111 1111 >>> 1  --->  0111 1111
        //此外：没有 <<< 这样的无符号左移运算符（因为对于左移，右边并没有符号位，无需考虑）
        //条件运算符（三目运算符） 表达式1 ？ 表达式2 ：表达式3


    }


    public static void main1(String[] args) {
        System.out.println("Hello, World!");
    }
}